// utils/aesUtil.js
import CryptoJS from 'crypto-js'

const SECRET_KEY = 'MySecretKey12345' // 16字节密钥
const ALGORITHM = 'aes-128-ecb'

/**
 * AES-128-ECB 加密
 * @param {String|Object} data 要加密的数据
 * @returns {String} base64格式的加密结果
 */
export const encrypt = (data) => {
  try {
    // 统一处理数据格式
    const dataStr = typeof data === 'string' ? data : JSON.stringify(data)
    
    // ECB模式不需要IV
    const key = CryptoJS.enc.Utf8.parse(SECRET_KEY)
    const encrypted = CryptoJS.AES.encrypt(dataStr, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    })
    
    return encrypted.toString()
  } catch (e) {
    console.error('加密失败:', e)
    throw new Error('数据加密失败')
  }
}

/**
 * AES-128-ECB 解密
 * @param {String} encrypted 加密后的字符串
 * @returns {String|Object} 解密后的原始数据
 */
export const decrypt = (encrypted) => {
  try {
    const key = CryptoJS.enc.Utf8.parse(SECRET_KEY)
    const decrypted = CryptoJS.AES.decrypt(encrypted, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    })
    
    const result = decrypted.toString(CryptoJS.enc.Utf8)
    
    // 尝试解析JSON
    try {
      return JSON.parse(result)
    } catch {
      return result
    }
  } catch (e) {
    console.error('解密失败:', e)
    throw new Error('数据解密失败')
  }
}
/**
 * 验证手机号格式
 * @param {string} phone - 要验证的手机号
 * @returns {boolean} 是否有效
 */
export const isValidPhone = (phone) => {
    return /^1[3-9]\d{9}$/.test(phone);
}

/**
 * 处理手机号
 * @param {string} phone - 原始手机号或加密字符串
 * @returns {string} 处理后的明文手机号
 */
export const setPhone = (phone) => {
    if (isValidPhone(phone)) {
        return phone;
    }
    return decrypt(phone);
}

